/**
题目:
给定一棵二叉树，想象自己站在它的右侧，按照从顶部到底部的顺序，返回从右侧所能看到的节点值。

示例:

输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:

   1            <---
 /   \
2     3         <---
 \     \
  5     4       <---
思路:
传递一个 计数器 然后用结果集的size作为当前的在第一层,当计算器等于结果集seize时说明时本层第一个元素
效果:
执行用时：0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗：2.2 MB, 在所有 Go 提交中击败了39.75%的用户
*/
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func rightSideView(root *TreeNode) []int {
    res := make([]int, 0)
    helper(&res, root, 0)
    return res
}
func helper(res *[]int, root *TreeNode, level int){
    if root == nil{
        return 
    }
    if level == len(*res){
        *res = append(*res, root.Val)
    }
    helper(res,root.Right,level+1)
    helper(res,root.Left,level+1)
}
